package com.sicheng.algorithm.math;

/**
 * @author zsc
 * @version 1.0
 * @date 2021/9/24 21:13
 */
public class RectangularCover {

    public static void main(String[] args) {
        System.out.println(recCover(5));
    }

    /**
     * 我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。
     * 请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形，
     * 总共有多少种方法
     * <p>
     * <p>
     * f(n)={n},n==1,n==2
     * f(n)={ f(n-1) + f(n-2) } ,n>2
     */
    public static int recCover(int totalRec) {

        if (totalRec <= 0)
            return -1;

        if (totalRec == 1 || totalRec == 2)
            return totalRec;

        int recCover_1 = 1, recCover_2 = 2;

        int index = 3;
        int temp = 0;
        while (index <= totalRec) {
            temp = recCover_1 + recCover_2;
            recCover_1 = recCover_2;
            recCover_2 = temp;
            index++;
        }


        return temp;
    }
}
